/**
 * 位置使用示例
 * 展示如何在不同页面中使用位置信息
 */

import locationManager from './location.js'

// 示例1：在页面中获取位置
export function getLocationInPage() {
    // 获取当前位置
    const location = locationManager.getCurrentLocation();
    console.log('当前位置:', location);
    
    return location;
}

// 示例2：在页面中监听位置更新
export function listenLocationUpdate(pageInstance) {
    // 添加位置更新监听器
    const locationListener = (newLocation) => {
        console.log('位置已更新:', newLocation);
        
        // 更新页面数据
        if (pageInstance && pageInstance.updateLocationData) {
            pageInstance.updateLocationData(newLocation);
        }
    };
    
    locationManager.addLocationListener(locationListener);
    
    // 返回监听器引用，用于后续移除
    return locationListener;
}

// 示例3：在页面销毁时移除监听器
export function removeLocationListener(listener) {
    if (listener) {
        locationManager.removeLocationListener(listener);
    }
}

// 示例4：检查并更新位置
export function checkAndUpdateLocation(callback) {
    const currentLocation = locationManager.getCurrentLocation();
    
    if (locationManager.isLocationExpired(currentLocation)) {
        console.log('位置已过期，正在更新...');
        locationManager.updateLocation((err, newLocation) => {
            if (callback) {
                callback(err, newLocation);
            }
        });
    } else {
        console.log('位置未过期，直接使用');
        if (callback) {
            callback(null, currentLocation);
        }
    }
}

// 示例5：在页面中使用位置的完整示例
export function useLocationInPage(pageInstance) {
    // 1. 获取当前位置
    const location = getLocationInPage();
    
    // 2. 添加位置更新监听器
    const listener = listenLocationUpdate(pageInstance);
    
    // 3. 检查位置是否需要更新
    checkAndUpdateLocation((err, newLocation) => {
        if (!err) {
            console.log('位置更新成功:', newLocation);
            // 可以在这里调用接口或其他操作
        }
    });
    
    // 4. 返回监听器，供页面销毁时移除
    return listener;
} 